import axios from 'axios';

// 创建 axios 实例
const instance = axios.create({
    baseURL: 'http://localhost:8080', // 更新为新的基础 URL
    timeout: 5000, // 超时时间
});

// 请求拦截器
instance.interceptors.request.use(
    config => {
        console.log(`发起请求：方法 [${config.method.toUpperCase()}]，URL [${config.url}]`);
        return config;
    },
    error => {
        console.error('请求错误：', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
instance.interceptors.response.use(
    response => {
        console.log('收到响应：', response);
        return response.data;
    },
    error => {
        console.error('响应错误：', error);
        return Promise.reject(error);
    }
);

// 获取所有试题包简要信息
export const getAllExamPaperPackages = () => {
    console.log('调用接口：获取所有试题包简要信息');
    return instance.get('/examPackages');
};

/**
 * 获取所有试题包简要信息的返回结构：
 * {
 *     "code": 200,             // 返回码，200表示成功
 *     "message": "操作成功",     // 操作信息
 *     "data": [                // 试题包数据数组
 *         {
 *             "id": 10000,       // 试题包 ID
 *             "packName": "试题包 10000",   // 试题包名称
 *             "busiTypeName1": "计算机学院", // 一级业务类型
 *             "busiTypeName2": "计算机科学与技术", // 二级业务类型
 *             "busiTypeName3": "课程方向", // 三级业务类型
 *             "questionCount": 8    // 试题数量
 *         },
 *         {
 *             "id": 10001,       // 试题包 ID
 *             "packName": "试题包 10001",   // 试题包名称
 *             "busiTypeName1": "电子信息学院", // 一级业务类型
 *             "busiTypeName2": "通信工程", // 二级业务类型
 *             "busiTypeName3": "课程方向", // 三级业务类型
 *             "questionCount": 8    // 试题数量
 *         },
 *         // 更多试题包数据
 *     ]
 * }
 */

// 获取试题包详细信息（通过 packageId 和 packageName）
export const getExamPaperPackageDetail = (params) => {
    console.log(`调用接口：获取试题包详细信息，参数：`, params);
    
    // 发送 GET 请求，params 会被正确传递作为查询参数
    return instance.get(`/examPackages/detail`, {
        params: params  // 正确传递对象，包含 packageId 和 packageName
    });
};


 //获取单个试题包详细信息的返回结构：
//  {
//     "code": 200,
//     "message": "操作成功",
//     "data": {
//         "id": 1001,
//         "packName": "试题包1",
//         "version": "1.0",
//         "isPublic": 0,
//         "busiTypeId1": 101,
//         "busiTypeName1": "计算机学院",
//         "busiType1": "计算机",
//         "busiTypeId2": 201,
//         "busiTypeName2": "软件工程",
//         "busiTypeId3": 301,
//         "busiTypeName3": "嵌入式方向",
//         "questions": [
//             {
//                 "id": 10101,
//                 "version": "1.0",
//                 "questionType": "radio",
//                 "busiTypeId1": "101",
//                 "busiTypeName1": "计算机学院",
//                 "busiType1": "计算机",
//                 "busiTypeId2": "201",
//                 "busiTypeName2": "软件工程",
//                 "busiTypeId3": "301",
//                 "busiTypeName3": "嵌入式方向",
//                 "qsContent": "下列哪项是Java的关键字？",
//                 "qsCorrectAns": "C",
//                 "keyword": "Java,关键字",
//                 "analysis": "Java中的关键字是保留的，不能作为变量名使用。",
//                 "correctAnsJson": "[{\"A\":\"include\"},{\"B\":\"define\"},{\"C\":\"class\"}]",
//                 "level": "1",
//                 "status": "0"
//             }
//         ]
//     }
// }




// 获取试卷列表（分页查询）的返回结构：
/**
 * {
 *     "code": 200,             // 返回码，200表示成功
 *     "message": "操作成功",     // 操作信息
 *     "data": {                // 分页数据对象
 *         "total": 2,          // 总记录数
 *         "totalPages": 1,     // 总页数
 *         "pageSize": 5,       // 每页记录数
 *         "pageNum": 1,        // 当前页码
 *         "items": [           // 试卷数据数组
 *             {
 *                 "id": 1,          // 试卷 ID
 *                 "name": "计算机基础试卷",   // 试卷名称
 *                 "busiTypeId1": 1, // 一级业务类型 ID
 *                 "busiTypeName1": "计算机学院", // 一级业务类型名称
 *                 "busiType1": "CS",  // 一级业务类型简称
 *                 "busiTypeId2": 11, // 二级业务类型 ID
 *                 "busiTypeName2": "基础课程", // 二级业务类型名称
 *                 "busiTypeId3": null, // 三级业务类型 ID
 *                 "busiTypeName3": null, // 三级业务类型名称
 *                 "paperType": 1,     // 试卷类型
 *                 "questionType": 1,  // 试题类型
 *                 "unifyPaper": 1,    // 是否统一试卷（1：是，0：否）
 *                 "questionOrder": 1, // 试题顺序
 *                 "description": "2024年计算机基础期末测试", // 试卷描述
 *                 "totalScore": 100,  // 总分
 *                 "passScore": 60,    // 及格分
 *                 "passScoreRate": "60%", // 及格率
 *                 "createTime": "2024-11-20 08:00:00", // 创建时间
 *                 "createAcc": "teacher001", // 创建账号
 *                 "createName": "张老师", // 创建人姓名
 *                 "createDept": "计算机学院", // 创建部门
 *                 "createDeptName": "软件工程系", // 创建部门名称
 *                 "updateTime": "2024-11-20 12:00:00", // 更新时间
 *                 "updateAcc": "admin001", // 更新账号
 *                 "updateName": "李老师", // 更新人姓名
 *                 "updateDept": "计算机学院", // 更新部门
 *                 "updateDeptName": "网络工程系", // 更新部门名称
 *                 "busiOrderId": "ORDER001", // 业务订单号
 *                 "entId": "ENT001" // 企业 ID
 *             },
 *             {
 *                 "id": 2,          // 试卷 ID
 *                 "name": "网络安全模拟考试", // 试卷名称
 *                 "busiTypeId1": 1, // 一级业务类型 ID
 *                 "busiTypeName1": "计算机学院", // 一级业务类型名称
 *                 "busiType1": "CS",  // 一级业务类型简称
 *                 "busiTypeId2": 12, // 二级业务类型 ID
 *                 "busiTypeName2": "专业课程", // 二级业务类型名称
 *                 "busiTypeId3": null, // 三级业务类型 ID
 *                 "busiTypeName3": null, // 三级业务类型名称
 *                 "paperType": 1,     // 试卷类型
 *                 "questionType": 2,  // 试题类型
 *                 "unifyPaper": 1,    // 是否统一试卷（1：是，0：否）
 *                 "questionOrder": 2, // 试题顺序
 *                 "description": "网络安全技能实战考核", // 试卷描述
 *                 "totalScore": 80,   // 总分
 *                 "passScore": 50,    // 及格分
 *                 "passScoreRate": "62.5%", // 及格率
 *                 "createTime": "2024-11-18 09:00:00", // 创建时间
 *                 "createAcc": "teacher002", // 创建账号
 *                 "createName": "王老师", // 创建人姓名
 *                 "createDept": "计算机学院", // 创建部门
 *                 "createDeptName": "网络安全系", // 创建部门名称
 *                 "updateTime": "2024-11-19 17:00:00", // 更新时间
 *                 "updateAcc": "admin002", // 更新账号
 *                 "updateName": "赵老师", // 更新人姓名
 *                 "updateDept": "计算机学院", // 更新部门
 *                 "updateDeptName": "网络安全系", // 更新部门名称
 *                 "busiOrderId": "ORDER002", // 业务订单号
 *                 "entId": "ENT002" // 企业 ID
 *             }
 *         ]
 *     }
 * }
 */

export const getExamPapersByPage = (params) => {
    console.log(`调用接口：获取试卷列表，参数：`, params);
    return instance.get(`/examPapers/page`, {
        params: params // 正确传递对象
    });
};


/**
 * getExamPapersByPage 接口的返回数据结构：
 * {
 *   "code": 200,
 *   "message": "success",
 *   "data": {
 *     "total": 100,
 *     "list": [
 *       {
 *         "id": "1",
 *         "name": "试卷名称",
 *         "totalScore": 100,
 *         "passingScore": 60,
 *         "totalQuestions": 50,
 *         "businessType": "技术",
 *         "examType": "选择题",
 *         "creator": "张老师",
 *         "createTime": "2024-11-01"
 *       }
 *       // ... 更多试卷数据
 *     ]
 *   }
 * }
 */
/**
 * 新增试卷
//   {
//     "paperId": "123",                // 试卷ID
//     "paperName": "测试试卷",         // 试卷名称
//     "busiTypeId1": 1,               // 一级业务类型ID
//     "busiTypeName1": "计算机学院",   // 一级业务类型名称
//     "busiType1": "computer",        // 一级业务类型编码
//     "busiTypeId2": 11,              // 二级业务类型ID
//     "busiTypeName2": "基础课程",     // 二级业务类型名称
//     "busiTypeId3": 111,             // 三级业务类型ID
//     "busiTypeName3": "计算机基础",   // 三级业务类型名称
//     "paperType": 1,                 // 试卷类型：1-每日一练
//     "questionType": 1,              // 出题类型：1-人工选题，2-随机选题
//     "unifyPaper": 1,                // 统一试卷：1-是
//     "questionOrder": 1,             // 题目顺序：1-固定顺序
//     "description": "这是试卷备注",   // 试卷备注
//     "totalScore": "100.00",         // 总分
//     "passScore": "60.00",           // 及格分数
//     "passScoreRate": "0.6",         // 及格率
//     "questions": {                  // 试题操作集合
//       "add": [                      // 新增的试题
//         {
//           "questionId": "1",        // 试题ID
//           "score": "10.00",         // 分数
//           "orderNumber": 1          // 顺序号
//         }
//       ]
//     }
//   }


 * @returns {Promise} - 返回接口响应
 */
export const createExamPaper = (examPaperData) => {
    console.log("调用接口：新增试卷，参数：", examPaperData);
    return instance.post(`/examPapers`, examPaperData);
};


// 更新试卷 API
export const updateExamPaper = (id, examPaperData) => {
    console.log(`调用接口：更新试卷，ID：${id}，参数：`, examPaperData);
    return instance.put(`/examPapers/${id}`, examPaperData);
};

// 更新试卷请求示例
// {
//     "paperId": "123",                // 试卷ID
//     "paperName": "测试试卷",         // 试卷名称
//     "busiTypeId1": 1,               // 一级业务类型ID
//     "busiTypeName1": "计算机学院",   // 一级业务类型名称
//     "busiType1": "computer",        // 一级业务类型编码
//     "busiTypeId2": 11,              // 二级业务类型ID
//     "busiTypeName2": "基础课程",     // 二级业务类型名称
//     "busiTypeId3": 111,             // 三级业务类型ID
//     "busiTypeName3": "计算机基础",   // 三级业务类型名称
//     "paperType": 1,                 // 试卷类型：1-每日一练
//     "questionType": 1,              // 出题类型：1-人工选题，2-随机选题
//     "unifyPaper": 1,                // 统一试卷：1-是
//     "questionOrder": 1,             // 题目顺序：1-固定顺序
//     "description": "这是试卷备注",   // 试卷备注
//     "totalScore": "100.00",         // 总分
//     "passScore": "60.00",           // 及格分数
//     "passScoreRate": "0.6",         // 及格率
//     "questions": {                  // 试题操作集合
//       "add": [                      // 新增的试题
//         {
//           "questionId": "1",        // 试题ID
//           "score": "10.00",         // 分数
//           "orderNumber": 1          // 顺序号
//         }
//       ],
//       "update": [                   // 更新的试题
//         {
//           "questionId": "2",        // 试题ID
//           "score": "15.00",         // 分数
//           "orderNumber": 2          // 顺序号
//         }
//       ],
//       "delete": [                   // 删除的试题ID列表
//         "3", "4", "5"
//       ]
//     }
//   }



// 删除试卷接口
export const deleteExamPaper = (id) => {
    console.log(`调用接口：删除试卷，ID：${id}`);
    return instance.delete(`/examPapers/${id}`);
};



// 根据试卷 ID 获取试卷详情
export const getExamPaperDetail = (id) => {
    console.log(`调用接口：获取试卷详情，ID：${id}`);
    return instance.get(`/examPapers/detail/${id}`);
};

// 获取试卷详情
//返回示例
// {
//     "code": 200,
//     "message": "操作成功",
//     "data": {
//         "paperId": 9,
//         "paperName": "人工智能导论",
//         "busiTypeId1": 1,
//         "busiTypeName1": "计算机学院",
//         "busiType1": "CS",
//         "busiTypeId2": 19,
//         "busiTypeName2": "基础课程",
//         "busiTypeId3": null,
//         "busiTypeName3": null,
//         "paperType": 2,
//         "questionType": 2,
//         "unifyPaper": null,
//         "questionOrder": 1,
//         "description": "人工智能导论期末测试",
//         "totalScore": 80,
//         "passScore": 48,
//         "passScoreRate": null,
//         "questions": [
//             {
//                 "id": 9,
//                 "questionId": 6,
//                 "version": "1.0",
//                 "questionType": "judge",
//                 "busiTypeId1": 101,
//                 "busiTypeName1": "计算机学院",
//                 "busiType1": "101",
//                 "busiTypeId2": 202,
//                 "busiTypeName2": "网络工程",
//                 "busiTypeId3": 302,
//                 "busiTypeName3": "云计算方向",
//                 "qsContent": "IP协议是可靠的传输协议。",
//                 "qsCorrectAns": "false",
//                 "keyword": null,
//                 "analysis": "IP协议是一种无连接的、不可靠的协议。",
//                 "correctAnsJson": null,
//                 "level": 2,
//                 "status": 0,
//                 "questionOrder": 8
//             }
//         ]
//     }
// }


export default {
    getAllExamPaperPackages,
    getExamPaperPackageDetail,
    getExamPapersByPage,
    getExamPaperDetail,
    createExamPaper, 
    updateExamPaper,
    deleteExamPaper,
};
